using System;
using System.Collections.Generic;
using System.Text;

namespace GridControl
{   

    /// <summary>
    /// Event arguments for the TreeNode events
    /// </summary>
    public class TreeEventArgs:EventArgs   
    {

        private string _eventName;

        /// <summary>
        /// Gets or sets the name of the event.
        /// </summary>
        /// <value>The name of the event.</value>
        public string EventName
        {
            get { return _eventName; }
            set { _eventName = value; }
        }
        private string _arguments;

        /// <summary>
        /// Gets or sets the arguments.
        /// </summary>
        /// <value>The arguments.</value>
        public string Arguments
        {
            get { return _arguments; }
            set { _arguments = value; }
        }
        

    }
    /// <summary>
    /// Class for node movement arguments
    /// </summary>
    public class NodeMoveEventArgs:EventArgs
    {
        private TreeNode _nodeMoved;
        /// <summary>
        /// Id of the Node moved
        /// </summary>
        public TreeNode NodeMoved
        {
            get { return _nodeMoved; }
            set { _nodeMoved = value; }
        }

        private TreeNode _oldParent;
        /// <summary>
        /// The id of the old parent of the moved node
        /// </summary>
        public TreeNode OldParent
        {
            get { return _oldParent; }
            set { _oldParent = value; }
        }
        private TreeNode _newParent;
        /// <summary>
        /// The id of new parent of the node moved
        /// </summary>
        public TreeNode NewParent
        {
            get { return _newParent; }
            set { _newParent = value; }
        }
    }
    /// <summary>
    /// Class for node edited arguments
    /// </summary>
    public class NodeEditedEventArgs:EventArgs
    {
        private TreeNode _nodeRenamed;
        /// <summary>
        /// Id of the node renamed
        /// </summary>
        public TreeNode NodeRenamed
        {
            get { return _nodeRenamed; }
            set { _nodeRenamed = value; }
        }
        private string _newValue;
        /// <summary>
        /// New value of the edited node
        /// </summary>
        public string NewValue
        {
            get { return _newValue; }
            set { _newValue = value; }
        }
    }
    /// <summary>
    /// Class for the node clicked event
    /// </summary>
    public class NodeClickedEventArgs:EventArgs
    {
        private TreeNode _NodeClicked;

        /// <summary>
        /// Gets or sets the id of the node clicked.
        /// </summary>
        /// <value>The id of the node clicked.</value>
        public TreeNode NodeClicked
        {
            get { return _NodeClicked; }
            set { _NodeClicked = value; }
        }
    }
    /// <summary>
    /// Class for the node checked event
    /// </summary>
    public class NodeCheckedEventArgs : EventArgs
    {
        private TreeNode _nodeChecked;

        /// <summary>
        /// Gets or sets the nodes checked.
        /// </summary>
        /// <value>The nodes checked.</value>
        public TreeNode NodeChecked
        {
            get { return _nodeChecked; }
            set { _nodeChecked = value; }
        }
    }
    /// <summary>
    /// Event arguments for the context menu clicked event
    /// </summary>
    public class TreeContextMenuEventArgs : EventArgs
    {
        private TreeNode _nodeSelected;

        /// <summary>
        /// The node that showed the menu
        /// </summary>
        /// <value>The node selected.</value>
        public TreeNode NodeSelected
        {
            get { return _nodeSelected; }
            set { _nodeSelected = value; }
        }
        private MenuItem _menuClicked;

        /// <summary>
        /// The text of the menu that was clicked
        /// </summary>
        /// <value>The menu clicked.</value>
        public MenuItem MenuClicked
        {
            get { return _menuClicked; }
            set { _menuClicked = value; }
        }
    }
}
